package com.isky.visual.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.env.Environment;
import org.springframework.core.env.Profiles;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.Contact;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;

import java.util.ArrayList;

/**
 * @author bj
 */
@Configuration
public class SwaggerConfig {

    /**
     * 注册bean Docket
     * @param env
     * @return
     */
    @Bean
    public Docket docket(Environment env){
        // 设置要显示swagger的环境 在application.properties 中配置spring.profiles.active=dev
        // spring 配置的优先级是properties>yaml文件的
        // 所以我一般保留一个properties来配置最高权限的配置
        // 而application.yaml用来配置数据库连接池等通用配置
        Profiles pro = Profiles.of("dev","test");
        // 判断是否是对应的环境
        boolean enable = env.acceptsProfiles(pro);
        return new Docket(DocumentationType.SWAGGER_2)
                // 配置文档信息!
                .apiInfo(apiInfo())
                // 如果是false就无法在浏览器中访问，可以配置
                .enable(enable)
                .select()
                //配置哪些目录下的被扫描
                .apis(RequestHandlerSelectors.basePackage("com.isky.visual"))
                .build();
    }

    /**
     * 配置文档信息 apiInfo
     * @return
     */
    private ApiInfo apiInfo(){
        Contact contact = new Contact("融天创科可视化工程","","");
        return new ApiInfo(
                "可视化工程接口文档",
                "所有的测试请求地址",
                "v1.0",
                //服务地址，可以配置公司官网
                "",
                //组织连接
                contact,
                "Apache 2.0",
                "http://www.apache.org/licenses/LICENSE-2.0",
                new ArrayList());
    }
}
